package com.Advance.InnerClass_.anonymous_interface;

/*匿名内部类的练习
1.有一个铃声接口Bell，里面有一个ring方法
2.有一个手机类Cellphone，具有闹钟功能alarmclock，参数是Bell类型
3.测试手机类的闹钟功能，通过匿名内部类（对象）作为参数，打印：懒猪起床了
4.再传入另一个匿名内部类（对象），打印：小伙伴上课了
 */
public class Test {
    public static void main(String[] args) {
        Cellphone cellphone = new Cellphone();
        //传递的是实现了 Bell 接口的匿名内部类
        cellphone.alarmclock(new Bell() {
            @Override
            public void ring() {
                System.out.println("懒猪起床了");
            }
        });
        cellphone.alarmclock(new Bell() {
            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }
        });
        //二者存在动态绑定机制，可以通过debug来判断
        //传统方法
        cellphone.alarmclock(new Cellphone1());
    }
}
interface Bell{
    void ring();
}
class Cellphone{
    public void alarmclock(Bell bell){
        System.out.println(bell.getClass());
        bell.ring();
    }
}
//硬编码
class Cellphone1 implements Bell{
    @Override
    public void ring() {
        System.out.println("懒猪起床了~~~~~~");
    }
}